#ifndef __LOG_H
#define __LOG_H
#include <stdio.h>
#include <time.h>
#include <stdarg.h>

typedef enum{
    DEBUG,
    INFO,
    WARNING,
    ERROR,
    FATAL
}log_level;

extern log_level curr_log_level;
extern FILE * log_file;

void log_init(const char * filename);
void log_close();
void log_write(log_level level, const char * format, ...);
#define LOG_DEBUG(msg, ...) log_write(DEBUG, msg, ##__VA_ARGS__)
#define LOG_INFO(msg, ...) log_write(INFO, msg, ##__VA_ARGS__)
#define LOG_WARNING(msg, ...) log_write(WARNING, msg, ##__VA_ARGS__)
#define LOG_ERROR(msg, ...) log_write(ERROR, msg, ##__VA_ARGS__)
#define LOG_FATAL(msg, ...) log_write(FATAL, msg, ##__VA_ARGS__)
#endif